Deploying new software or configuration settings to large or geographically distributed wireless networks can be difficult and time consuming. Upgrades have traditionally been performed by a centralized device that communicates individually to each device (e.g., node) that requires an update. If a network is comprised of multiple hops from this centralized device to the end device requiring an update, communication may be unreliable, thereby causing failures. Additionally, the amount of time required to upgrade one device at a time in a large network could become unpractical.
One method of solving this problem is to distribute the node update process so that any node can upgrade any other node. Once this capability is enabled, there is no longer a single point coordinating updates, and updates can begin to occur concurrently. As each additional node is upgraded, it becomes one more node which has the potential to simultaneously upgrade another node. This method can also enable the upgrading of large, low-power networks which spend most of their time in a low-power state, for example, the Sleepy Mesh® network provided by Synapse Wireless, Inc. Because the entire network does not need to be active to maintain communication links between all nodes, upgrades can happen between any two devices, though upgrades between neighboring devices yield best performance.
There are, however, some limitations on the actual number of nodes being simultaneously upgraded. Depending on the RF channel availability, there are a limited number of simultaneous packets that can be transmitted wirelessly. The probability of packet collisions can be reduced by spreading these packet transmissions out in frequency, separating them in time, or spreading them by spread spectrum spreading codes. To find the optimum channel availability for each channel, a limited number of upgrade attempts should occur such that once a unit has failed multiple times due to lack of channel availability, it should stop or temporarily delay attempting to search for nodes to be upgraded. Recognizing that the channel bandwidth has been saturated and ceasing traffic for that channel frees up channel availability so that each RF channel's capacity is maximized.
Once a node has the capability to upgrade other nodes, the process for determining which node it will choose to update can be done a few different ways depending on network configuration. Firstly, the node will transmit a multicast broadcast “search” message asking for an application version and device type if it has one. If the device type matches and the application version is out of date or one is not present, then the responding device is a candidate for an upgrade. In a dense network however, multiple devices will likely respond to the single broadcast “search” message. The originating device must determine which of the eligible devices it will choose to actually perform the upgrade on. One simple method would be to simply choose the first eligible device who responds. For a more robust system, it may be preferable for the device to determine the respondent node with the best signal strength measurement which is measured while receiving each of the responses.
The process of an upgrade according to an exemplary embodiment of the present disclosure starts off with a broadcast “search” message in which the originating node sends a multicast message where only nodes that have a different version than the originator or no application code at all will respond. The responses to the “search” message are randomly distributed over a fixed time interval such that responses have a significantly reduced probability of interfering with each other during wireless transmission. Once all of the devices within radio range have responded to the “search” message, a handshaking process will begin where the initiating node (Node A, e.g.) has to “claim” another node as a designee to be upgraded. if another node (Node B, e.g.) has already “claimed” this node (Node C, e.g.), the claiming node (Node B) will inform the first node (Node A) that it can't upgrade the claimed node (Node C) and must choose a different one. This process eliminates or drastically reduces conflicts where two devices attempt to upgrade the same device at the same time. While such conflicts may not actually cause a problem for the upgrade process, they could reduce the speed of the upgrade process and therefore reduce the efficiency of the upgrade process.
In another embodiment requiring an additional handshaking step, the upgrade performance is enhanced by combining the “claiming” process with a process of moving the designee node to a unique network (either by frequency, time, or spreading code).
The method according to the present disclosure allows mobile, ad-hoc, and even peer-to-peer networks with no central point of communication to perform network upgrades. For example, an upgraded node can be in a device worn by a person, and that device could upgrade any devices that come within range of that person. For example, people passing by wearing devices in need of upgrades could be upgraded automatically when they pass within radio range. For example, this could be done with cell phones: if a user with an upgraded device passes near someone with a device in need of upgrading, the upgraded device can automatically upgrade the passing device.